package com.mmy.fta.usercenter.api;

import com.mmy.fta.usercenter.dto.*;
import com.mmy.fta.usercenter.request.VerifyRequest;
import com.ymm.common.rpc.YmmResult;

/**
 * @apiNote 用户中心service
 * @author qingyu.meng
 * @date 2021年10月19日 7:10 下午
 * @exportable
 */
public interface UserService {
    /**
     * 用户登录
     * @param openId
     * @return
     */
    YmmResult<UserDTO> login(String openId);

    /**
     * 用户实名认证
     * @param verifyRequest
     * @return
     * @throws Exception
     */
    YmmResult<UserDTO> verify(VerifyRequest verifyRequest) throws Exception;

    /**
     * 用户OCR识别
     * @return
     */
    YmmResult<UserDTO> OCRMessage();

    YmmResult<DrivingLicenseDTO> drivingLicenseOCR();

    YmmResult<DriverLicenseDTO> driverLicenseOCR();

    /**
     * 根据openId查询货主信息
     * @param openId
     * @return
     */
    YmmResult<ShipperDTO> queryByOpenId(String openId);


    String queryShipperPhoneNumber(String openId);

    /**
     * 根据货主身份证号查询货主信息
     * @param identityId
     * @return
     */
    YmmResult<ShipperDTO> queryByShipperIdentityId(String identityId);

    /**
     * 根据openId查询司机信息
     * @param openId
     * @return
     */
    YmmResult<DriverDTO> queryDriverInfoByOpenId(String openId);

    /**
     * 货主发货
     * @param identityNo
     * @return
     */
    YmmResult sendCargo(String identityNo);

    /**
     * 发送验证码
     * @param phoneNumer
     * @return
     */
    YmmResult sendVerifyCode(String phoneNumer);

    /**
     *
     * @param phoneNumber
     * @param code
     * @return
     */
    YmmResult sendMessage(String phoneNumber,String code);

    /**
     * 验证验证码
     * @param phoneNumber
     * @param verifyCode
     * @return
     */
    YmmResult verifyCode(String phoneNumber,String verifyCode);


    /**
     * 保存行驶证信息
     * @param drivingLicenseDTO
     * @param openId
     * @return
     */
    YmmResult saveDrivingLicenseInfo(DrivingLicenseDTO drivingLicenseDTO,String openId);

    /**
     * 保存驾驶证信息
     * @param driverLicenseDTO
     * @param openId
     * @return
     */
    YmmResult saveDriverLicenseInfo(DriverLicenseDTO driverLicenseDTO,String openId);

    /**
     * 保存司机信息
     * @param driverDTO
     * @param openId
     * @return
     */
    YmmResult saveDriverInfo(DriverDTO driverDTO,String openId);

    /**
     * 查询司机权益
     * @param openId
     * @return
     */
    YmmResult<DriverInterestsDTO> queryDriverInterests(String openId);


    String queryShipperPhone(String openId);

    boolean queryShipperIsColdMember(String openId);


    /**
     * 司机取消订单
     * 非会员货主openid_user shipper_info 剩余发货次数加一
     * 会员货主 openid_user shipper_info 剩余发货次数加一 shipper_membership 剩余发货次数加一，当月发货减一
     * @param openId
     */
    void updateShipperForCancelOrderByDriver(String openId);
}
